package com.hongdee.rbac.roledata.service;

import com.hongdee.rbac.roledata.entity.TBcRoleData;

import java.util.List;
import java.util.Map;

/**
 * Created by My on 2017-01-20.
 */
public interface ITBcRoleDataService {

    /**
     * 方法名称: page
     * 方法描述: 分页查询品牌变更历史
     * 参数名称: String start 起始行数
     * 参数名称: String limit 分页大小
     * 参数名称: String sql sql语句
     * 参数名称: String roleName 查询所需参数
     * 返回内容: Map
     * 异常说明: Exception
     * 创建用户:术洪超
     * 创建时间:
     * 修改用户:术洪超
     * 修改时间:2017/2/8
     * 修改内容:注释内容
     */
    Map page(String start, String limit, String uid, String roleName) throws Exception;

    /**
     * 方法名称: info
     * 方法描述: 详情查询
     * 参数名称：String id 主键id
     * 返回内容: Map
     * 异常说明: Exception
     * 创建用户:术洪超
     * 创建时间:
     * 修改用户:术洪超
     * 修改时间:2017/2/8
     * 修改内容:注释内容
     */
    Map info(String id) throws Exception;

    /**
     * 方法名称: saveOrUpdate
     *
     * @param data TBcRoleData data 要保存的变更历史记录实体
     * @param uid  当前用户
     * @return TBcRoleData 保存后的历史记录实体
     * @throws Exception 基类异常
     *                   创建用户:术洪超
     *                   创建时间:
     *                   修改用户:术洪超
     *                   修改时间:2017/2/8
     *                   修改内容:注释内容
     * @desc 保存或更新实体，通过主键判断
     */
    TBcRoleData saveOrUpdate(TBcRoleData data, String uid) throws Exception;

    /**
     * 方法名称: update
     * 方法描述: 修改品牌状态
     * 参数名称: String id 主键id
     * 参数名称: String status 状态
     * 返回内容:
     * 异常说明:Exception
     * 创建用户:术洪超
     * 创建时间:
     * 修改用户:术洪超
     * 修改时间:2017/2/8
     * 修改内容:注释内容
     */
    void update(String id, String status) throws Exception;


    /**
     * 方法名称: ref
     * 方法描述: 查询数据角色关联
     * 参数名称: String sqlStr sql语句
     * 返回内容: Object... params 查询所需参数
     * 异常说明: Exception
     * 创建用户: 术洪超
     * 创建时间:
     * 修改用户:术洪超
     * 修改时间:2017/2/8
     * 修改内容:注释内容
     */
    List<String> ref(String id, String roleType) throws Exception;

    /**
     * @param uid 异常
     * @return 角色列表
     * @throws Exception 基类异常
     * @desc 根据当前登录用户查询其可进行分配的角色
     * @author zhangkai
     * @date 2017/2/11
     * @time 09:37
     * @update_user
     * @update_time
     * @update_desc:
     */
    List tree(String uid, String type) throws Exception;

    /**
     * @param id   数据角色ID
     * @param type 数据角色类型
     * @return
     * @desc 查询分配的部门或人员
     */
    List orgTree(String id, String type, String companyId) throws Exception;

    /**
     * @param roleType 角色类型，默认为数据角色
     * @param id       角色主键
     * @param refNodes 要保存的数据
     * @return
     * @throws Exception
     * @desc 保存分配给该角色的权限
     */
    void saveRef(String id, String roleType, List<Map<String, Object>> refNodes) throws Exception;
    /**
     * 根据登录都ID 及相应的部门ID 获得其对应的数据权限
     * @param uid
     * @param oid
     * @return
     * @throws Exception
     */
    public Map findRoleInfoByOIdAndUId(String uid,String oid)throws Exception;
}
